Load libraries

library(car)
library(knitr)
library(rmdformats)
library(ggplot2)
library(ggpubr)
library(GGally)
library(tidyverse)
library(lme4)
library(lmerTest)
library("MuMIn")
library(lmtest)
library(boot)

Read datasets

AllSubs_NeuralActivation <- read.csv('/Users/luisalvarez/Documents/GitHub/RM_Thesis_Neuroforecasting/ProcessedData/AllSubs_NeuralActivation_Aggregate_Combined_clean.csv')

AllSubs_NeuralActivation_Comedy <- read.csv('/Users/luisalvarez/Documents/GitHub/RM_Thesis_Neuroforecasting/ProcessedData/AllSubs_NeuralActivation_Aggregate_Combined_Comedy_clean.csv')

AllSubs_NeuralActivation_Horror <- read.csv('/Users/luisalvarez/Documents/GitHub/RM_Thesis_Neuroforecasting/ProcessedData/AllSubs_NeuralActivation_Aggregate_Combined_Horror_clean.csv')

Notes:

Create data frames for each model.

# Define aggregate variables. 
All_Gross_W1_log <- log(AllSubs_NeuralActivation$Gross_US_W1_num)
All_Theaters_W1 <- AllSubs_NeuralActivation$Theaters_US_W1_num

Comedy_Gross_W1_log <- log(AllSubs_NeuralActivation_Comedy$Gross_US_W1_num)
Comedy_Theaters_W1 <- AllSubs_NeuralActivation_Comedy$Theaters_US_W1_num

Horror_Gross_W1_log <- log(AllSubs_NeuralActivation_Horror$Gross_US_W1_num)
Horror_Theaters_W1 <- AllSubs_NeuralActivation_Horror$Theaters_US_W1_num
  
M1_df <- data.frame(All_Gross_W1_log, All_Theaters_W1) 
M1_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_Theaters_W1) 
M1_H_df <- data.frame(Horror_Gross_W1_log, Horror_Theaters_W1) 

# Define affect variables.
All_PA <- AllSubs_NeuralActivation$Pos_arousal_scaled
All_NA <- AllSubs_NeuralActivation$Neg_arousal_scaled

Comedy_PA <- AllSubs_NeuralActivation_Comedy$Pos_arousal_scaled
Comedy_NA <- AllSubs_NeuralActivation_Comedy$Neg_arousal_scaled

Horror_PA <- AllSubs_NeuralActivation_Horror$Pos_arousal_scaled
Horror_NA <- AllSubs_NeuralActivation_Horror$Neg_arousal_scaled

M2_df <- data.frame(All_Gross_W1_log, All_PA, All_NA) 
M2_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_PA, Comedy_NA) 
M2_H_df <- data.frame(Horror_Gross_W1_log, Horror_PA, Horror_NA) 
# Define ISC variables. 
All_NAcc_ISC <- AllSubs_NeuralActivation$NAcc_ISC
All_AIns_ISC <- AllSubs_NeuralActivation$AIns_ISC
All_MPFC_ISC <- AllSubs_NeuralActivation$MPFC_ISC

Comedy_NAcc_ISC <- AllSubs_NeuralActivation_Comedy$NAcc_ISC
Comedy_AIns_ISC <- AllSubs_NeuralActivation_Comedy$AIns_ISC
Comedy_MPFC_ISC <- AllSubs_NeuralActivation_Comedy$MPFC_ISC

Horror_NAcc_ISC <- AllSubs_NeuralActivation_Horror$NAcc_ISC
Horror_AIns_ISC <- AllSubs_NeuralActivation_Horror$AIns_ISC
Horror_MPFC_ISC <- AllSubs_NeuralActivation_Horror$MPFC_ISC

# Define models. 
M4_df <- data.frame(All_NAcc_ISC, All_AIns_ISC, All_MPFC_ISC) 
M4_C_df <- data.frame(Comedy_NAcc_ISC, Comedy_AIns_ISC, Comedy_MPFC_ISC) 
M4_H_df <- data.frame(Horror_NAcc_ISC, Horror_AIns_ISC, Horror_MPFC_ISC) 

M5_df <- data.frame(All_Gross_W1_log, All_PA, All_NA, All_NAcc_ISC, All_AIns_ISC, All_MPFC_ISC) 
M5_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_ISC, Comedy_AIns_ISC, Comedy_MPFC_ISC) 
M5_H_df <- data.frame(Horror_Gross_W1_log, Horror_PA, Horror_NA, Horror_NAcc_ISC, Horror_AIns_ISC, Horror_MPFC_ISC) 
# Define whole variables. 
All_NAcc_whole <- AllSubs_NeuralActivation$NAcc_whole
All_AIns_whole <- AllSubs_NeuralActivation$AIns_whole
All_MPFC_whole <- AllSubs_NeuralActivation$MPFC_whole

Comedy_NAcc_whole <- AllSubs_NeuralActivation_Comedy$NAcc_whole
Comedy_AIns_whole <- AllSubs_NeuralActivation_Comedy$AIns_whole
Comedy_MPFC_whole <- AllSubs_NeuralActivation_Comedy$MPFC_whole

Horror_NAcc_whole <- AllSubs_NeuralActivation_Horror$NAcc_whole
Horror_AIns_whole <- AllSubs_NeuralActivation_Horror$AIns_whole
Horror_MPFC_whole <- AllSubs_NeuralActivation_Horror$MPFC_whole

# Define models. 
M6_df <- data.frame(All_NAcc_whole, All_AIns_whole, All_MPFC_whole) 
M6_C_df <- data.frame(Comedy_NAcc_whole, Comedy_AIns_whole, Comedy_MPFC_whole) 
M6_H_df <- data.frame(Horror_NAcc_whole, Horror_AIns_whole, Horror_MPFC_whole) 

M7_df <- data.frame(All_Gross_W1_log, All_PA, All_NA, All_NAcc_whole, All_AIns_whole, All_MPFC_whole) 
M7_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_whole,
                      Comedy_AIns_whole, Comedy_MPFC_whole) 
M7_H_df <- data.frame(Horror_Gross_W1_log, Horror_PA, Horror_NA, Horror_NAcc_whole,
                      Horror_AIns_whole, Horror_MPFC_whole) 
# Define onset variables. 
All_NAcc_onset <- AllSubs_NeuralActivation$NAcc_onset
All_AIns_onset <- AllSubs_NeuralActivation$AIns_onset
All_MPFC_onset <- AllSubs_NeuralActivation$MPFC_onset

Comedy_NAcc_onset <- AllSubs_NeuralActivation_Comedy$NAcc_onset
Comedy_AIns_onset <- AllSubs_NeuralActivation_Comedy$AIns_onset
Comedy_MPFC_onset <- AllSubs_NeuralActivation_Comedy$MPFC_onset

Horror_NAcc_onset <- AllSubs_NeuralActivation_Horror$NAcc_onset
Horror_AIns_onset <- AllSubs_NeuralActivation_Horror$AIns_onset
Horror_MPFC_onset <- AllSubs_NeuralActivation_Horror$MPFC_onset

# Define models. 
M8_df <- data.frame(All_NAcc_onset, All_AIns_onset, All_MPFC_onset) 
M8_C_df <- data.frame(Comedy_NAcc_onset, Comedy_AIns_onset, Comedy_MPFC_onset) 
M8_H_df <- data.frame(Horror_NAcc_onset, Horror_AIns_onset, Horror_MPFC_onset) 

M9_df <- data.frame(All_Gross_W1_log, All_PA, All_NA, All_NAcc_onset, All_AIns_onset, All_MPFC_onset) 
M9_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_onset,
                      Comedy_AIns_onset, Comedy_MPFC_onset) 
M9_H_df <- data.frame(Horror_Gross_W1_log, Horror_PA, Horror_NA, Horror_NAcc_onset,
                      Horror_AIns_onset, Horror_MPFC_onset) 
# Define middle variables. 
All_NAcc_middle <- AllSubs_NeuralActivation$NAcc_middle
All_AIns_middle <- AllSubs_NeuralActivation$AIns_middle
All_MPFC_middle <- AllSubs_NeuralActivation$MPFC_middle

Comedy_NAcc_middle <- AllSubs_NeuralActivation_Comedy$NAcc_middle
Comedy_AIns_middle <- AllSubs_NeuralActivation_Comedy$AIns_middle
Comedy_MPFC_middle <- AllSubs_NeuralActivation_Comedy$MPFC_middle

Horror_NAcc_middle <- AllSubs_NeuralActivation_Horror$NAcc_middle
Horror_AIns_middle <- AllSubs_NeuralActivation_Horror$AIns_middle
Horror_MPFC_middle <- AllSubs_NeuralActivation_Horror$MPFC_middle

# Define models. 
M10_df <- data.frame(All_NAcc_middle, All_AIns_middle, All_MPFC_middle) 
M10_C_df <- data.frame(Comedy_NAcc_middle, Comedy_AIns_middle, Comedy_MPFC_middle) 
M10_H_df <- data.frame(Horror_NAcc_middle, Horror_AIns_middle, Horror_MPFC_middle) 

M11_df <- data.frame(All_Gross_W1_log, All_PA, All_NA, All_NAcc_middle, All_AIns_middle, All_MPFC_middle) 
M11_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_middle,
                      Comedy_AIns_middle, Comedy_MPFC_middle) 
M11_H_df <- data.frame(Horror_Gross_W1_log, Horror_PA, Horror_NA, Horror_NAcc_middle,
                      Horror_AIns_middle, Horror_MPFC_middle) 
# Define middle variables. 
All_NAcc_offset <- AllSubs_NeuralActivation$NAcc_offset
All_AIns_offset <- AllSubs_NeuralActivation$AIns_offset
All_MPFC_offset <- AllSubs_NeuralActivation$MPFC_offset

Comedy_NAcc_offset <- AllSubs_NeuralActivation_Comedy$NAcc_offset
Comedy_AIns_offset <- AllSubs_NeuralActivation_Comedy$AIns_offset
Comedy_MPFC_offset <- AllSubs_NeuralActivation_Comedy$MPFC_offset

Horror_NAcc_offset <- AllSubs_NeuralActivation_Horror$NAcc_offset
Horror_AIns_offset <- AllSubs_NeuralActivation_Horror$AIns_offset
Horror_MPFC_offset <- AllSubs_NeuralActivation_Horror$MPFC_offset

# Define models. 
M12_df <- data.frame(All_NAcc_offset, All_AIns_offset, All_MPFC_offset) 
M12_C_df <- data.frame(Comedy_NAcc_offset, Comedy_AIns_offset, Comedy_MPFC_offset) 
M12_H_df <- data.frame(Horror_NAcc_offset, Horror_AIns_offset, Horror_MPFC_offset) 

M13_df <- data.frame(All_Gross_W1_log, All_PA, All_NA, All_NAcc_offset, All_AIns_offset, All_MPFC_offset) 
M13_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_offset,
                      Comedy_AIns_offset, Comedy_MPFC_offset) 
M13_H_df <- data.frame(Horror_Gross_W1_log, Horror_PA, Horror_NA, Horror_NAcc_offset,
                      Horror_AIns_offset, Horror_MPFC_offset) 

M14_df <- data.frame(All_Gross_W1_log, All_PA, All_NA, All_NAcc_onset, All_AIns_middle, All_MPFC_offset) 
M14_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_onset,
                      Comedy_AIns_middle, Comedy_MPFC_offset) 
M14_H_df <- data.frame(Horror_Gross_W1_log, Horror_PA, Horror_NA, Horror_NAcc_onset,
                      Horror_AIns_middle, Horror_MPFC_offset) 

Neuroforecasting: First Week US.

M1: Behavioral data


Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Theaters_US_W1_num) + 
    Type:scale(Theaters_US_W1_num), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-1.55922 -0.28515  0.02387  0.33475  1.38066 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                           16.4641     0.2010  81.928  < 2e-16 ***
Typecomedy                            -0.5646     0.2655  -2.127  0.04310 *  
scale(Theaters_US_W1_num)              1.5282     0.4206   3.633  0.00121 ** 
Typecomedy:scale(Theaters_US_W1_num)  -0.3868     0.4422  -0.875  0.38980    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.688 on 26 degrees of freedom
Multiple R-squared:  0.7944,    Adjusted R-squared:  0.7706 
F-statistic: 33.48 on 3 and 26 DF,  p-value: 4.425e-09

           R2m       R2c
[1,] 0.7759523 0.7759523
[1] 68.40126

M2: Affective data alone


Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Pos_arousal_scaled) + 
    scale(Neg_arousal_scaled) + Type:scale(Pos_arousal_scaled) + 
    Type:scale(Neg_arousal_scaled), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
    Min      1Q  Median      3Q     Max 
-4.1431 -0.4889  0.1215  0.9237  1.9269 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                           17.0177     1.1362  14.977 1.12e-13 ***
Typecomedy                            -0.2736     1.8589  -0.147    0.884    
scale(Pos_arousal_scaled)             -0.1825     0.8610  -0.212    0.834    
scale(Neg_arousal_scaled)             -0.3956     0.7695  -0.514    0.612    
Typecomedy:scale(Pos_arousal_scaled)   0.4911     0.9404   0.522    0.606    
Typecomedy:scale(Neg_arousal_scaled)   1.8368     1.8219   1.008    0.323    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.411 on 24 degrees of freedom
Multiple R-squared:  0.2017,    Adjusted R-squared:  0.03533 
F-statistic: 1.212 on 5 and 24 DF,  p-value: 0.3335

           R2m       R2c
[1,] 0.1728986 0.1728986
[1] 113.0942

M3: Aggregate and affective data alone


Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Pos_arousal_scaled) + 
    scale(Neg_arousal_scaled) + Type:scale(Pos_arousal_scaled) + 
    Type:scale(Neg_arousal_scaled), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
    Min      1Q  Median      3Q     Max 
-4.1431 -0.4889  0.1215  0.9237  1.9269 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                           17.0177     1.1362  14.977 1.12e-13 ***
Typecomedy                            -0.2736     1.8589  -0.147    0.884    
scale(Pos_arousal_scaled)             -0.1825     0.8610  -0.212    0.834    
scale(Neg_arousal_scaled)             -0.3956     0.7695  -0.514    0.612    
Typecomedy:scale(Pos_arousal_scaled)   0.4911     0.9404   0.522    0.606    
Typecomedy:scale(Neg_arousal_scaled)   1.8368     1.8219   1.008    0.323    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.411 on 24 degrees of freedom
Multiple R-squared:  0.2017,    Adjusted R-squared:  0.03533 
F-statistic: 1.212 on 5 and 24 DF,  p-value: 0.3335

           R2m       R2c
[1,] 0.1728986 0.1728986
[1] 113.0942

M4: ISC data alone


Call:
lm(formula = log(Gross_US_W1_num) ~ Type + +scale(NAcc_ISC) + 
    scale(AIns_ISC) + scale(MPFC_ISC) + Type:scale(NAcc_ISC) + 
    Type:scale(AIns_ISC) + Type:scale(MPFC_ISC), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
    Min      1Q  Median      3Q     Max 
-4.5626 -0.3083  0.2310  0.5370  1.9757 

Coefficients:
                           Estimate Std. Error t value Pr(>|t|)    
(Intercept)                16.70980    0.40320  41.443   <2e-16 ***
Typecomedy                 -0.99626    0.54755  -1.819   0.0825 .  
scale(NAcc_ISC)             0.61228    0.56292   1.088   0.2885    
scale(AIns_ISC)            -0.12105    0.38625  -0.313   0.7569    
scale(MPFC_ISC)             0.29369    0.53461   0.549   0.5883    
Typecomedy:scale(NAcc_ISC) -0.80448    0.66711  -1.206   0.2407    
Typecomedy:scale(AIns_ISC)  0.38701    0.62113   0.623   0.5396    
Typecomedy:scale(MPFC_ISC) -0.09906    0.64873  -0.153   0.8800    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.453 on 22 degrees of freedom
Multiple R-squared:  0.2241,    Adjusted R-squared:  -0.02275 
F-statistic: 0.9078 on 7 and 22 DF,  p-value: 0.5184

           R2m       R2c
[1,] 0.1797455 0.1797455
[1] 116.2379

M5: ISC data + affective data + behavioral data


Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Theaters_US_W1_num) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_ISC) + 
    scale(AIns_ISC) + scale(MPFC_ISC) + Type:scale(Theaters_US_W1_num) + 
    Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) + 
    Type:scale(NAcc_ISC) + Type:scale(AIns_ISC) + Type:scale(MPFC_ISC), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.86763 -0.24968 -0.00754  0.28252  1.12778 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                          16.01970    0.56278  28.465 3.92e-15 ***
Typecomedy                            1.95895    0.89449   2.190  0.04368 *  
scale(Theaters_US_W1_num)             1.30716    0.44394   2.944  0.00952 ** 
scale(Pos_arousal_scaled)            -0.90672    0.40708  -2.227  0.04063 *  
scale(Neg_arousal_scaled)            -0.25800    0.37397  -0.690  0.50015    
scale(NAcc_ISC)                       0.23035    0.26084   0.883  0.39026    
scale(AIns_ISC)                      -0.28392    0.16844  -1.686  0.11127    
scale(MPFC_ISC)                       0.60359    0.26119   2.311  0.03449 *  
Typecomedy:scale(Theaters_US_W1_num) -0.02941    0.46422  -0.063  0.95027    
Typecomedy:scale(Pos_arousal_scaled)  0.68765    0.45661   1.506  0.15155    
Typecomedy:scale(Neg_arousal_scaled)  2.58832    0.87119   2.971  0.00901 ** 
Typecomedy:scale(NAcc_ISC)            0.07230    0.31912   0.227  0.82363    
Typecomedy:scale(AIns_ISC)            0.18418    0.28584   0.644  0.52849    
Typecomedy:scale(MPFC_ISC)           -0.97877    0.31329  -3.124  0.00654 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.5868 on 16 degrees of freedom
Multiple R-squared:  0.9079,    Adjusted R-squared:  0.8331 
F-statistic: 12.14 on 13 and 16 DF,  p-value: 6.43e-06

           R2m       R2c
[1,] 0.8447398 0.8447398
[1] 64.29403

M6: Neural whole data alone


Call:
lm(formula = log(Gross_US_W1_num) ~ Type + +scale(NAcc_whole) + 
    scale(AIns_whole) + scale(MPFC_whole) + Type:scale(NAcc_whole) + 
    Type:scale(AIns_whole) + Type:scale(MPFC_whole), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
    Min      1Q  Median      3Q     Max 
-3.6829 -0.3831  0.1901  0.6917  2.0438 

Coefficients:
                             Estimate Std. Error t value Pr(>|t|)    
(Intercept)                   16.5732     0.5184  31.967   <2e-16 ***
Typecomedy                    -0.7712     0.7399  -1.042    0.309    
scale(NAcc_whole)             -0.5606     0.5368  -1.044    0.308    
scale(AIns_whole)              0.5299     0.6150   0.862    0.398    
scale(MPFC_whole)              0.1706     0.5180   0.329    0.745    
Typecomedy:scale(NAcc_whole)   0.3765     0.7021   0.536    0.597    
Typecomedy:scale(AIns_whole)  -0.2614     0.9131  -0.286    0.777    
Typecomedy:scale(MPFC_whole)   0.2835     0.6416   0.442    0.663    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.44 on 22 degrees of freedom
Multiple R-squared:  0.2374,    Adjusted R-squared:  -0.005294 
F-statistic: 0.9782 on 7 and 22 DF,  p-value: 0.4714

           R2m       R2c
[1,] 0.1910128 0.1910128
[1] 115.7214

M7: Neural whole data + affective data + behavioral data


Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Theaters_US_W1_num) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_whole) + 
    scale(AIns_whole) + scale(MPFC_whole) + Type:scale(Theaters_US_W1_num) + 
    Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) + 
    Type:scale(NAcc_whole) + Type:scale(AIns_whole) + Type:scale(MPFC_whole), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.99456 -0.27314 -0.01657  0.28123  0.96246 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                          16.25722    0.60777  26.749 1.04e-14 ***
Typecomedy                            1.57410    0.91504   1.720   0.1047    
scale(Theaters_US_W1_num)             1.52817    0.41444   3.687   0.0020 ** 
scale(Pos_arousal_scaled)            -0.20928    0.58243  -0.359   0.7241    
scale(Neg_arousal_scaled)            -0.09669    0.38485  -0.251   0.8048    
scale(NAcc_whole)                    -0.14503    0.26272  -0.552   0.5885    
scale(AIns_whole)                     0.28367    0.28207   1.006   0.3295    
scale(MPFC_whole)                    -0.08670    0.32947  -0.263   0.7958    
Typecomedy:scale(Theaters_US_W1_num) -0.38738    0.43351  -0.894   0.3848    
Typecomedy:scale(Pos_arousal_scaled)  0.27624    0.61052   0.452   0.6570    
Typecomedy:scale(Neg_arousal_scaled)  2.45693    0.88987   2.761   0.0139 *  
Typecomedy:scale(NAcc_whole)          0.51907    0.33703   1.540   0.1431    
Typecomedy:scale(AIns_whole)         -0.47906    0.41378  -1.158   0.2640    
Typecomedy:scale(MPFC_whole)          0.38309    0.37290   1.027   0.3196    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.5955 on 16 degrees of freedom
Multiple R-squared:  0.9052,    Adjusted R-squared:  0.8281 
F-statistic: 11.75 on 13 and 16 DF,  p-value: 8.023e-06

           R2m       R2c
[1,] 0.8404262 0.8404262
[1] 65.17857

M8: Neural onset data alone


Call:
lm(formula = log(Gross_US_W1_num) ~ Type + +scale(NAcc_onset) + 
    scale(AIns_onset) + scale(MPFC_onset) + Type:scale(NAcc_onset) + 
    Type:scale(AIns_onset) + Type:scale(MPFC_onset), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
    Min      1Q  Median      3Q     Max 
-3.6998 -0.4321  0.1720  0.8185  1.6881 

Coefficients:
                             Estimate Std. Error t value Pr(>|t|)    
(Intercept)                   16.9078     0.4518  37.427   <2e-16 ***
Typecomedy                    -1.6161     0.5897  -2.741   0.0119 *  
scale(NAcc_onset)             -0.3234     0.5216  -0.620   0.5415    
scale(AIns_onset)             -0.2077     0.5842  -0.356   0.7256    
scale(MPFC_onset)              0.1921     0.4738   0.405   0.6891    
Typecomedy:scale(NAcc_onset)   0.4906     0.6429   0.763   0.4535    
Typecomedy:scale(AIns_onset)  -0.7656     0.7631  -1.003   0.3266    
Typecomedy:scale(MPFC_onset)   1.0559     0.6864   1.538   0.1382    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.335 on 22 degrees of freedom
Multiple R-squared:  0.3447,    Adjusted R-squared:  0.1362 
F-statistic: 1.653 on 7 and 22 DF,  p-value: 0.1729

           R2m       R2c
[1,] 0.2852503 0.2852503
[1] 111.1697

M9: Neural onset data + affective data + behavioral data


Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Theaters_US_W1_num) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_onset) + 
    scale(AIns_onset) + scale(MPFC_onset) + Type:scale(Theaters_US_W1_num) + 
    Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) + 
    Type:scale(NAcc_onset) + Type:scale(AIns_onset) + Type:scale(MPFC_onset), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.90801 -0.39211  0.06306  0.33282  1.20478 

Coefficients:
                                      Estimate Std. Error t value Pr(>|t|)    
(Intercept)                          17.302775   0.844057  20.500 6.54e-13 ***
Typecomedy                           -0.076805   1.202093  -0.064  0.94985    
scale(Theaters_US_W1_num)             1.562535   0.425321   3.674  0.00205 ** 
scale(Pos_arousal_scaled)            -0.366374   0.499891  -0.733  0.47422    
scale(Neg_arousal_scaled)            -0.741677   0.523649  -1.416  0.17584    
scale(NAcc_onset)                    -0.342762   0.271261  -1.264  0.22448    
scale(AIns_onset)                    -0.841501   0.392021  -2.147  0.04750 *  
scale(MPFC_onset)                     0.268483   0.256281   1.048  0.31038    
Typecomedy:scale(Theaters_US_W1_num) -0.467642   0.452099  -1.034  0.31634    
Typecomedy:scale(Pos_arousal_scaled)  0.205970   0.548225   0.376  0.71207    
Typecomedy:scale(Neg_arousal_scaled)  2.338685   1.039689   2.249  0.03892 *  
Typecomedy:scale(NAcc_onset)          0.520227   0.368203   1.413  0.17685    
Typecomedy:scale(AIns_onset)          0.477460   0.473021   1.009  0.32781    
Typecomedy:scale(MPFC_onset)         -0.009214   0.379665  -0.024  0.98094    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.6614 on 16 degrees of freedom
Multiple R-squared:  0.883, Adjusted R-squared:  0.788 
F-statistic: 9.292 on 13 and 16 DF,  p-value: 3.817e-05

           R2m       R2c
[1,] 0.8064055 0.8064055
[1] 71.47321

M10: Neural middle data alone


Call:
lm(formula = log(Gross_US_W1_num) ~ Type + +scale(NAcc_middle) + 
    scale(AIns_middle) + scale(MPFC_middle) + Type:scale(NAcc_middle) + 
    Type:scale(AIns_middle) + Type:scale(MPFC_middle), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
    Min      1Q  Median      3Q     Max 
-4.0479 -0.3572  0.1014  0.7554  1.8228 

Coefficients:
                              Estimate Std. Error t value Pr(>|t|)    
(Intercept)                   16.77683    0.46169  36.338   <2e-16 ***
Typecomedy                    -0.44119    0.65006  -0.679    0.504    
scale(NAcc_middle)            -0.37128    0.60411  -0.615    0.545    
scale(AIns_middle)             0.13702    0.44866   0.305    0.763    
scale(MPFC_middle)            -0.27542    0.41798  -0.659    0.517    
Typecomedy:scale(NAcc_middle)  0.40053    0.72039   0.556    0.584    
Typecomedy:scale(AIns_middle)  0.98953    0.72471   1.365    0.186    
Typecomedy:scale(MPFC_middle) -0.02962    0.60640  -0.049    0.961    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.367 on 22 degrees of freedom
Multiple R-squared:  0.3126,    Adjusted R-squared:  0.09385 
F-statistic: 1.429 on 7 and 22 DF,  p-value: 0.2438

           R2m       R2c
[1,] 0.2564756 0.2564756
[1] 112.6066

M11: Neural middle data + affective data + behavioral data


Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Theaters_US_W1_num) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_middle) + 
    scale(AIns_middle) + scale(MPFC_middle) + Type:scale(Theaters_US_W1_num) + 
    Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) + 
    Type:scale(NAcc_middle) + Type:scale(AIns_middle) + Type:scale(MPFC_middle), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.90123 -0.34967  0.06124  0.32376  1.04536 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                          16.21572    0.60396  26.849  9.8e-15 ***
Typecomedy                            0.84466    0.91724   0.921  0.37079    
scale(Theaters_US_W1_num)             1.81371    0.48933   3.707  0.00192 ** 
scale(Pos_arousal_scaled)            -0.35687    0.43224  -0.826  0.42115    
scale(Neg_arousal_scaled)            -0.30347    0.42833  -0.708  0.48884    
scale(NAcc_middle)                    0.36408    0.39195   0.929  0.36675    
scale(AIns_middle)                    0.22775    0.21781   1.046  0.31127    
scale(MPFC_middle)                   -0.10071    0.21057  -0.478  0.63893    
Typecomedy:scale(Theaters_US_W1_num) -0.65853    0.50875  -1.294  0.21390    
Typecomedy:scale(Pos_arousal_scaled)  0.21594    0.49100   0.440  0.66596    
Typecomedy:scale(Neg_arousal_scaled)  1.31128    0.98801   1.327  0.20307    
Typecomedy:scale(NAcc_middle)        -0.04305    0.43809  -0.098  0.92295    
Typecomedy:scale(AIns_middle)         0.03310    0.45306   0.073  0.94267    
Typecomedy:scale(MPFC_middle)        -0.13681    0.31461  -0.435  0.66947    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.6424 on 16 degrees of freedom
Multiple R-squared:  0.8897,    Adjusted R-squared:    0.8 
F-statistic: 9.924 on 13 and 16 DF,  p-value: 2.481e-05

           R2m       R2c
[1,] 0.8164716 0.8164716
[1] 69.72344

M12: Neural offset data alone


Call:
lm(formula = log(Gross_US_W1_num) ~ Type + +scale(NAcc_offset) + 
    scale(AIns_offset) + scale(MPFC_offset) + Type:scale(NAcc_offset) + 
    Type:scale(AIns_offset) + Type:scale(MPFC_offset), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
    Min      1Q  Median      3Q     Max 
-3.6743 -0.3508  0.1999  0.6837  2.0821 

Coefficients:
                              Estimate Std. Error t value Pr(>|t|)    
(Intercept)                    16.6822     0.4184  39.867   <2e-16 ***
Typecomedy                     -1.1003     0.5997  -1.835   0.0801 .  
scale(NAcc_offset)             -0.2359     0.4577  -0.516   0.6113    
scale(AIns_offset)              0.2008     0.3980   0.505   0.6189    
scale(MPFC_offset)              0.2403     0.5422   0.443   0.6619    
Typecomedy:scale(NAcc_offset)  -0.1149     0.7216  -0.159   0.8750    
Typecomedy:scale(AIns_offset)  -0.5850     0.8097  -0.722   0.4776    
Typecomedy:scale(MPFC_offset)   0.2360     0.6859   0.344   0.7340    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.467 on 22 degrees of freedom
Multiple R-squared:  0.2093,    Adjusted R-squared:  -0.04228 
F-statistic: 0.8319 on 7 and 22 DF,  p-value: 0.5723

           R2m       R2c
[1,] 0.1672302 0.1672302
[1] 116.8054

M13: Neural offset data + affective data + behavioral data


Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Theaters_US_W1_num) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_offset) + 
    scale(AIns_offset) + scale(MPFC_offset) + Type:scale(Theaters_US_W1_num) + 
    Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) + 
    Type:scale(NAcc_offset) + Type:scale(AIns_offset) + Type:scale(MPFC_offset), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.83310 -0.25490 -0.02203  0.31792  0.94449 

Coefficients:
                                      Estimate Std. Error t value Pr(>|t|)    
(Intercept)                          16.392380   0.504429  32.497 4.87e-16 ***
Typecomedy                            0.871610   0.745363   1.169 0.259378    
scale(Theaters_US_W1_num)             1.958277   0.478836   4.090 0.000855 ***
scale(Pos_arousal_scaled)             0.007493   0.426807   0.018 0.986211    
scale(Neg_arousal_scaled)            -0.081703   0.441972  -0.185 0.855661    
scale(NAcc_offset)                   -0.150464   0.174607  -0.862 0.401568    
scale(AIns_offset)                    0.269710   0.163034   1.654 0.117544    
scale(MPFC_offset)                   -0.397626   0.347125  -1.145 0.268855    
Typecomedy:scale(Theaters_US_W1_num) -0.783077   0.491361  -1.594 0.130566    
Typecomedy:scale(Pos_arousal_scaled)  0.160197   0.457094   0.350 0.730558    
Typecomedy:scale(Neg_arousal_scaled)  1.762680   0.779570   2.261 0.038040 *  
Typecomedy:scale(NAcc_offset)         0.030317   0.267425   0.113 0.911151    
Typecomedy:scale(AIns_offset)        -0.227606   0.315011  -0.723 0.480395    
Typecomedy:scale(MPFC_offset)         0.950272   0.379822   2.502 0.023585 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.5168 on 16 degrees of freedom
Multiple R-squared:  0.9286,    Adjusted R-squared:  0.8706 
F-statistic:    16 on 13 and 16 DF,  p-value: 9.396e-07

           R2m       R2c
[1,] 0.8776506 0.8776506
[1] 56.67541

M14: Sequence model


Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Theaters_US_W1_num) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_onset) + 
    scale(AIns_middle) + scale(MPFC_offset) + Type:scale(Pos_arousal_scaled) + 
    Type:scale(Neg_arousal_scaled) + Type:scale(NAcc_onset) + 
    Type:scale(AIns_middle) + Type:scale(MPFC_offset), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-1.00369 -0.10391  0.00625  0.19037  0.76465 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                          16.50986    0.39356  41.950  < 2e-16 ***
Typecomedy                            1.49474    0.69392   2.154 0.045875 *  
scale(Theaters_US_W1_num)             1.20671    0.09297  12.979    3e-10 ***
scale(Pos_arousal_scaled)            -0.26824    0.33773  -0.794 0.437992    
scale(Neg_arousal_scaled)            -0.38981    0.27581  -1.413 0.175606    
scale(NAcc_onset)                    -0.36685    0.19239  -1.907 0.073595 .  
scale(AIns_middle)                    0.41837    0.15054   2.779 0.012859 *  
scale(MPFC_offset)                    0.11172    0.23432   0.477 0.639590    
Typecomedy:scale(Pos_arousal_scaled)  0.35027    0.37689   0.929 0.365707    
Typecomedy:scale(Neg_arousal_scaled)  2.85753    0.71248   4.011 0.000906 ***
Typecomedy:scale(NAcc_onset)          0.69729    0.24036   2.901 0.009942 ** 
Typecomedy:scale(AIns_middle)        -0.46369    0.26794  -1.731 0.101635    
Typecomedy:scale(MPFC_offset)         0.52593    0.27348   1.923 0.071384 .  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.4455 on 17 degrees of freedom
Multiple R-squared:  0.9436,    Adjusted R-squared:  0.9038 
F-statistic: 23.71 on 12 and 17 DF,  p-value: 3.021e-08

           R2m       R2c
[1,] 0.9074989 0.9074989
[1] 47.58297
there are higher-order terms (interactions) in this model
consider setting type = 'predictor'; see ?vif
                          Type      scale(Theaters_US_W1_num)      scale(Pos_arousal_scaled) 
                     18.115472                       1.263053                      16.666114 
     scale(Neg_arousal_scaled)              scale(NAcc_onset)             scale(AIns_middle) 
                     11.115527                       5.408594                       3.311431 
            scale(MPFC_offset) Type:scale(Pos_arousal_scaled) Type:scale(Neg_arousal_scaled) 
                      8.023124                      11.875668                      15.574833 
        Type:scale(NAcc_onset)        Type:scale(AIns_middle)        Type:scale(MPFC_offset) 
                      5.464800                       3.321676                       7.912335 
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkKYGBgCgojIExvYWQgbGlicmFyaWVzCmBgYHtyfQpsaWJyYXJ5KGNhcikKbGlicmFyeShrbml0cikKbGlicmFyeShybWRmb3JtYXRzKQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkoZ2dwdWJyKQpsaWJyYXJ5KEdHYWxseSkKYGBgCgoKYGBge3IsIHdhcm5pbmcgPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShsbWU0KQpsaWJyYXJ5KGxtZXJUZXN0KQpsaWJyYXJ5KCJNdU1JbiIpCmxpYnJhcnkobG10ZXN0KQpsaWJyYXJ5KGJvb3QpCmBgYAoKIyBSZWFkIGRhdGFzZXRzCmBgYHtyfQpBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gPC0gcmVhZC5jc3YoJy9Vc2Vycy9sdWlzYWx2YXJlei9Eb2N1bWVudHMvR2l0SHViL1JNX1RoZXNpc19OZXVyb2ZvcmVjYXN0aW5nL1Byb2Nlc3NlZERhdGEvQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0FnZ3JlZ2F0ZV9Db21iaW5lZF9jbGVhbi5jc3YnKQoKQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSA8LSByZWFkLmNzdignL1VzZXJzL2x1aXNhbHZhcmV6L0RvY3VtZW50cy9HaXRIdWIvUk1fVGhlc2lzX05ldXJvZm9yZWNhc3RpbmcvUHJvY2Vzc2VkRGF0YS9BbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQWdncmVnYXRlX0NvbWJpbmVkX0NvbWVkeV9jbGVhbi5jc3YnKQoKQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciA8LSByZWFkLmNzdignL1VzZXJzL2x1aXNhbHZhcmV6L0RvY3VtZW50cy9HaXRIdWIvUk1fVGhlc2lzX05ldXJvZm9yZWNhc3RpbmcvUHJvY2Vzc2VkRGF0YS9BbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQWdncmVnYXRlX0NvbWJpbmVkX0hvcnJvcl9jbGVhbi5jc3YnKQoKYGBgCiMgTm90ZXM6IAogLSBIYXZlIG5vdGUgcmVtb3ZlZCBvdXRsaWVycyBmcm9tIGRhdGEuCgojIENyZWF0ZSBkYXRhIGZyYW1lcyBmb3IgZWFjaCBtb2RlbC4KYGBge3J9CiMgRGVmaW5lIGFnZ3JlZ2F0ZSB2YXJpYWJsZXMuIApBbGxfR3Jvc3NfVzFfbG9nIDwtIGxvZyhBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kR3Jvc3NfVVNfVzFfbnVtKQpBbGxfVGhlYXRlcnNfVzEgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJFRoZWF0ZXJzX1VTX1cxX251bQoKQ29tZWR5X0dyb3NzX1cxX2xvZyA8LSBsb2coQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRHcm9zc19VU19XMV9udW0pCkNvbWVkeV9UaGVhdGVyc19XMSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JFRoZWF0ZXJzX1VTX1cxX251bQoKSG9ycm9yX0dyb3NzX1cxX2xvZyA8LSBsb2coQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRHcm9zc19VU19XMV9udW0pCkhvcnJvcl9UaGVhdGVyc19XMSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJFRoZWF0ZXJzX1VTX1cxX251bQogIApNMV9kZiA8LSBkYXRhLmZyYW1lKEFsbF9Hcm9zc19XMV9sb2csIEFsbF9UaGVhdGVyc19XMSkgCk0xX0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfR3Jvc3NfVzFfbG9nLCBDb21lZHlfVGhlYXRlcnNfVzEpIApNMV9IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX0dyb3NzX1cxX2xvZywgSG9ycm9yX1RoZWF0ZXJzX1cxKSAKCiMgRGVmaW5lIGFmZmVjdCB2YXJpYWJsZXMuCkFsbF9QQSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kUG9zX2Fyb3VzYWxfc2NhbGVkCkFsbF9OQSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTmVnX2Fyb3VzYWxfc2NhbGVkCgpDb21lZHlfUEEgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRQb3NfYXJvdXNhbF9zY2FsZWQKQ29tZWR5X05BIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkTmVnX2Fyb3VzYWxfc2NhbGVkCgpIb3Jyb3JfUEEgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRQb3NfYXJvdXNhbF9zY2FsZWQKSG9ycm9yX05BIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTmVnX2Fyb3VzYWxfc2NhbGVkCgpNMl9kZiA8LSBkYXRhLmZyYW1lKEFsbF9Hcm9zc19XMV9sb2csIEFsbF9QQSwgQWxsX05BKSAKTTJfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9Hcm9zc19XMV9sb2csIENvbWVkeV9QQSwgQ29tZWR5X05BKSAKTTJfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9Hcm9zc19XMV9sb2csIEhvcnJvcl9QQSwgSG9ycm9yX05BKSAKYGBgCgpgYGB7cn0KIyBEZWZpbmUgSVNDIHZhcmlhYmxlcy4gCkFsbF9OQWNjX0lTQyA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTkFjY19JU0MKQWxsX0FJbnNfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRBSW5zX0lTQwpBbGxfTVBGQ19JU0MgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJE1QRkNfSVNDCgpDb21lZHlfTkFjY19JU0MgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSROQWNjX0lTQwpDb21lZHlfQUluc19JU0MgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRBSW5zX0lTQwpDb21lZHlfTVBGQ19JU0MgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRNUEZDX0lTQwoKSG9ycm9yX05BY2NfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTkFjY19JU0MKSG9ycm9yX0FJbnNfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkQUluc19JU0MKSG9ycm9yX01QRkNfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTVBGQ19JU0MKCiMgRGVmaW5lIG1vZGVscy4gCk00X2RmIDwtIGRhdGEuZnJhbWUoQWxsX05BY2NfSVNDLCBBbGxfQUluc19JU0MsIEFsbF9NUEZDX0lTQykgCk00X0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfTkFjY19JU0MsIENvbWVkeV9BSW5zX0lTQywgQ29tZWR5X01QRkNfSVNDKSAKTTRfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9OQWNjX0lTQywgSG9ycm9yX0FJbnNfSVNDLCBIb3Jyb3JfTVBGQ19JU0MpIAoKTTVfZGYgPC0gZGF0YS5mcmFtZShBbGxfR3Jvc3NfVzFfbG9nLCBBbGxfUEEsIEFsbF9OQSwgQWxsX05BY2NfSVNDLCBBbGxfQUluc19JU0MsIEFsbF9NUEZDX0lTQykgCk01X0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfR3Jvc3NfVzFfbG9nLCBDb21lZHlfUEEsIENvbWVkeV9OQSwgQ29tZWR5X05BY2NfSVNDLCBDb21lZHlfQUluc19JU0MsIENvbWVkeV9NUEZDX0lTQykgCk01X0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfR3Jvc3NfVzFfbG9nLCBIb3Jyb3JfUEEsIEhvcnJvcl9OQSwgSG9ycm9yX05BY2NfSVNDLCBIb3Jyb3JfQUluc19JU0MsIEhvcnJvcl9NUEZDX0lTQykgCmBgYAoKYGBge3J9CiMgRGVmaW5lIHdob2xlIHZhcmlhYmxlcy4gCkFsbF9OQWNjX3dob2xlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiROQWNjX3dob2xlCkFsbF9BSW5zX3dob2xlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRBSW5zX3dob2xlCkFsbF9NUEZDX3dob2xlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRNUEZDX3dob2xlCgpDb21lZHlfTkFjY193aG9sZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE5BY2Nfd2hvbGUKQ29tZWR5X0FJbnNfd2hvbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRBSW5zX3dob2xlCkNvbWVkeV9NUEZDX3dob2xlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkTVBGQ193aG9sZQoKSG9ycm9yX05BY2Nfd2hvbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciROQWNjX3dob2xlCkhvcnJvcl9BSW5zX3dob2xlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkQUluc193aG9sZQpIb3Jyb3JfTVBGQ193aG9sZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJE1QRkNfd2hvbGUKCiMgRGVmaW5lIG1vZGVscy4gCk02X2RmIDwtIGRhdGEuZnJhbWUoQWxsX05BY2Nfd2hvbGUsIEFsbF9BSW5zX3dob2xlLCBBbGxfTVBGQ193aG9sZSkgCk02X0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfTkFjY193aG9sZSwgQ29tZWR5X0FJbnNfd2hvbGUsIENvbWVkeV9NUEZDX3dob2xlKSAKTTZfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9OQWNjX3dob2xlLCBIb3Jyb3JfQUluc193aG9sZSwgSG9ycm9yX01QRkNfd2hvbGUpIAoKTTdfZGYgPC0gZGF0YS5mcmFtZShBbGxfR3Jvc3NfVzFfbG9nLCBBbGxfUEEsIEFsbF9OQSwgQWxsX05BY2Nfd2hvbGUsIEFsbF9BSW5zX3dob2xlLCBBbGxfTVBGQ193aG9sZSkgCk03X0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfR3Jvc3NfVzFfbG9nLCBDb21lZHlfUEEsIENvbWVkeV9OQSwgQ29tZWR5X05BY2Nfd2hvbGUsCiAgICAgICAgICAgICAgICAgICAgICBDb21lZHlfQUluc193aG9sZSwgQ29tZWR5X01QRkNfd2hvbGUpIApNN19IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX0dyb3NzX1cxX2xvZywgSG9ycm9yX1BBLCBIb3Jyb3JfTkEsIEhvcnJvcl9OQWNjX3dob2xlLAogICAgICAgICAgICAgICAgICAgICAgSG9ycm9yX0FJbnNfd2hvbGUsIEhvcnJvcl9NUEZDX3dob2xlKSAKYGBgCgpgYGB7cn0KIyBEZWZpbmUgb25zZXQgdmFyaWFibGVzLiAKQWxsX05BY2Nfb25zZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJE5BY2Nfb25zZXQKQWxsX0FJbnNfb25zZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJEFJbnNfb25zZXQKQWxsX01QRkNfb25zZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJE1QRkNfb25zZXQKCkNvbWVkeV9OQWNjX29uc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkTkFjY19vbnNldApDb21lZHlfQUluc19vbnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JEFJbnNfb25zZXQKQ29tZWR5X01QRkNfb25zZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRNUEZDX29uc2V0CgpIb3Jyb3JfTkFjY19vbnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJE5BY2Nfb25zZXQKSG9ycm9yX0FJbnNfb25zZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRBSW5zX29uc2V0CkhvcnJvcl9NUEZDX29uc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTVBGQ19vbnNldAoKIyBEZWZpbmUgbW9kZWxzLiAKTThfZGYgPC0gZGF0YS5mcmFtZShBbGxfTkFjY19vbnNldCwgQWxsX0FJbnNfb25zZXQsIEFsbF9NUEZDX29uc2V0KSAKTThfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9OQWNjX29uc2V0LCBDb21lZHlfQUluc19vbnNldCwgQ29tZWR5X01QRkNfb25zZXQpIApNOF9IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX05BY2Nfb25zZXQsIEhvcnJvcl9BSW5zX29uc2V0LCBIb3Jyb3JfTVBGQ19vbnNldCkgCgpNOV9kZiA8LSBkYXRhLmZyYW1lKEFsbF9Hcm9zc19XMV9sb2csIEFsbF9QQSwgQWxsX05BLCBBbGxfTkFjY19vbnNldCwgQWxsX0FJbnNfb25zZXQsIEFsbF9NUEZDX29uc2V0KSAKTTlfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9Hcm9zc19XMV9sb2csIENvbWVkeV9QQSwgQ29tZWR5X05BLCBDb21lZHlfTkFjY19vbnNldCwKICAgICAgICAgICAgICAgICAgICAgIENvbWVkeV9BSW5zX29uc2V0LCBDb21lZHlfTVBGQ19vbnNldCkgCk05X0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfR3Jvc3NfVzFfbG9nLCBIb3Jyb3JfUEEsIEhvcnJvcl9OQSwgSG9ycm9yX05BY2Nfb25zZXQsCiAgICAgICAgICAgICAgICAgICAgICBIb3Jyb3JfQUluc19vbnNldCwgSG9ycm9yX01QRkNfb25zZXQpIApgYGAKCmBgYHtyfQojIERlZmluZSBtaWRkbGUgdmFyaWFibGVzLiAKQWxsX05BY2NfbWlkZGxlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiROQWNjX21pZGRsZQpBbGxfQUluc19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJEFJbnNfbWlkZGxlCkFsbF9NUEZDX21pZGRsZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTVBGQ19taWRkbGUKCkNvbWVkeV9OQWNjX21pZGRsZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE5BY2NfbWlkZGxlCkNvbWVkeV9BSW5zX21pZGRsZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JEFJbnNfbWlkZGxlCkNvbWVkeV9NUEZDX21pZGRsZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE1QRkNfbWlkZGxlCgpIb3Jyb3JfTkFjY19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciROQWNjX21pZGRsZQpIb3Jyb3JfQUluc19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRBSW5zX21pZGRsZQpIb3Jyb3JfTVBGQ19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRNUEZDX21pZGRsZQoKIyBEZWZpbmUgbW9kZWxzLiAKTTEwX2RmIDwtIGRhdGEuZnJhbWUoQWxsX05BY2NfbWlkZGxlLCBBbGxfQUluc19taWRkbGUsIEFsbF9NUEZDX21pZGRsZSkgCk0xMF9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X05BY2NfbWlkZGxlLCBDb21lZHlfQUluc19taWRkbGUsIENvbWVkeV9NUEZDX21pZGRsZSkgCk0xMF9IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX05BY2NfbWlkZGxlLCBIb3Jyb3JfQUluc19taWRkbGUsIEhvcnJvcl9NUEZDX21pZGRsZSkgCgpNMTFfZGYgPC0gZGF0YS5mcmFtZShBbGxfR3Jvc3NfVzFfbG9nLCBBbGxfUEEsIEFsbF9OQSwgQWxsX05BY2NfbWlkZGxlLCBBbGxfQUluc19taWRkbGUsIEFsbF9NUEZDX21pZGRsZSkgCk0xMV9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X0dyb3NzX1cxX2xvZywgQ29tZWR5X1BBLCBDb21lZHlfTkEsIENvbWVkeV9OQWNjX21pZGRsZSwKICAgICAgICAgICAgICAgICAgICAgIENvbWVkeV9BSW5zX21pZGRsZSwgQ29tZWR5X01QRkNfbWlkZGxlKSAKTTExX0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfR3Jvc3NfVzFfbG9nLCBIb3Jyb3JfUEEsIEhvcnJvcl9OQSwgSG9ycm9yX05BY2NfbWlkZGxlLAogICAgICAgICAgICAgICAgICAgICAgSG9ycm9yX0FJbnNfbWlkZGxlLCBIb3Jyb3JfTVBGQ19taWRkbGUpIApgYGAKCmBgYHtyfQojIERlZmluZSBtaWRkbGUgdmFyaWFibGVzLiAKQWxsX05BY2Nfb2Zmc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiROQWNjX29mZnNldApBbGxfQUluc19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJEFJbnNfb2Zmc2V0CkFsbF9NUEZDX29mZnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTVBGQ19vZmZzZXQKCkNvbWVkeV9OQWNjX29mZnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE5BY2Nfb2Zmc2V0CkNvbWVkeV9BSW5zX29mZnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JEFJbnNfb2Zmc2V0CkNvbWVkeV9NUEZDX29mZnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE1QRkNfb2Zmc2V0CgpIb3Jyb3JfTkFjY19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciROQWNjX29mZnNldApIb3Jyb3JfQUluc19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRBSW5zX29mZnNldApIb3Jyb3JfTVBGQ19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRNUEZDX29mZnNldAoKIyBEZWZpbmUgbW9kZWxzLiAKTTEyX2RmIDwtIGRhdGEuZnJhbWUoQWxsX05BY2Nfb2Zmc2V0LCBBbGxfQUluc19vZmZzZXQsIEFsbF9NUEZDX29mZnNldCkgCk0xMl9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X05BY2Nfb2Zmc2V0LCBDb21lZHlfQUluc19vZmZzZXQsIENvbWVkeV9NUEZDX29mZnNldCkgCk0xMl9IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX05BY2Nfb2Zmc2V0LCBIb3Jyb3JfQUluc19vZmZzZXQsIEhvcnJvcl9NUEZDX29mZnNldCkgCgpNMTNfZGYgPC0gZGF0YS5mcmFtZShBbGxfR3Jvc3NfVzFfbG9nLCBBbGxfUEEsIEFsbF9OQSwgQWxsX05BY2Nfb2Zmc2V0LCBBbGxfQUluc19vZmZzZXQsIEFsbF9NUEZDX29mZnNldCkgCk0xM19DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X0dyb3NzX1cxX2xvZywgQ29tZWR5X1BBLCBDb21lZHlfTkEsIENvbWVkeV9OQWNjX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgIENvbWVkeV9BSW5zX29mZnNldCwgQ29tZWR5X01QRkNfb2Zmc2V0KSAKTTEzX0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfR3Jvc3NfVzFfbG9nLCBIb3Jyb3JfUEEsIEhvcnJvcl9OQSwgSG9ycm9yX05BY2Nfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgSG9ycm9yX0FJbnNfb2Zmc2V0LCBIb3Jyb3JfTVBGQ19vZmZzZXQpIApgYGAKCmBgYHtyfQoKTTE0X2RmIDwtIGRhdGEuZnJhbWUoQWxsX0dyb3NzX1cxX2xvZywgQWxsX1BBLCBBbGxfTkEsIEFsbF9OQWNjX29uc2V0LCBBbGxfQUluc19taWRkbGUsIEFsbF9NUEZDX29mZnNldCkgCk0xNF9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X0dyb3NzX1cxX2xvZywgQ29tZWR5X1BBLCBDb21lZHlfTkEsIENvbWVkeV9OQWNjX29uc2V0LAogICAgICAgICAgICAgICAgICAgICAgQ29tZWR5X0FJbnNfbWlkZGxlLCBDb21lZHlfTVBGQ19vZmZzZXQpIApNMTRfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9Hcm9zc19XMV9sb2csIEhvcnJvcl9QQSwgSG9ycm9yX05BLCBIb3Jyb3JfTkFjY19vbnNldCwKICAgICAgICAgICAgICAgICAgICAgIEhvcnJvcl9BSW5zX21pZGRsZSwgSG9ycm9yX01QRkNfb2Zmc2V0KSAKYGBgCgoKIyBOZXVyb2ZvcmVjYXN0aW5nOiBGaXJzdCBXZWVrIFVTLgojIyBNMTogQmVoYXZpb3JhbCBkYXRhIApgYGB7ciwgZWNobyA9IEZBTFNFfQpNMSA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgCiAgICAgICAgICsgc2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICAsIGRhdGEgPSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gJT4lIG11dGF0ZShUeXBlID0gZmFjdG9yKFR5cGUsIGxldmVscyA9IGMoImhvcnJvciIsICJjb21lZHkiKSkpKQpzdW1tYXJ5KE0xKQpyLnNxdWFyZWRHTE1NKE0xKQpBSUMoTTEpCgojIENyZWF0ZSBwYWlycyBwbG90LiAKZ2dwYWlycyhNMV9kZikKZ2dwYWlycyhNMV9DX2RmKQpnZ3BhaXJzKE0xX0hfZGYpCmBgYAoKCiMjIE0yOiBBZmZlY3RpdmUgZGF0YSBhbG9uZQpgYGB7ciwgZWNobyA9IEZBTFNFfQpNMiA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgCiAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgKyBzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICsgVHlwZTpzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTIpCnIuc3F1YXJlZEdMTU0oTTIpCkFJQyhNMikKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0yX2RmKQpnZ3BhaXJzKE0yX0NfZGYpCmdncGFpcnMoTTJfSF9kZikKYGBgCgojIyBNMzogQWdncmVnYXRlIGFuZCBhZmZlY3RpdmUgZGF0YSBhbG9uZQpgYGB7ciwgZWNobyA9IEZBTFNFfQpNMyA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgCiAgICAgICAgICMrIHNjYWxlKFRoZWF0ZXJzX1VTX1cxX251bSkKICAgICAgICAgKyBzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpIAogICAgICAgICArIHNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgIysgVHlwZTpzY2FsZShUaGVhdGVyc19VU19XMV9udW0pCiAgICAgICAgICsgVHlwZTpzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTMpCnIuc3F1YXJlZEdMTU0oTTMpCkFJQyhNMykKCmBgYAoKIyBNNDogSVNDIGRhdGEgYWxvbmUKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTQgPC0gbG0obG9nKEdyb3NzX1VTX1cxX251bSkgfiBUeXBlICsgCiAgICAgICAgICAgICAgKyBzY2FsZShOQWNjX0lTQykgCiAgICAgICAgICAgICAgKyBzY2FsZShBSW5zX0lTQykgCiAgICAgICAgICAgICAgKyBzY2FsZShNUEZDX0lTQykgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5BY2NfSVNDKSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc19JU0MpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX0lTQykgCiAgICAgICAgICAgICAgLCBkYXRhID0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uICU+JSBtdXRhdGUoVHlwZSA9IGZhY3RvcihUeXBlLCBsZXZlbHMgPSBjKCJob3Jyb3IiLCAiY29tZWR5IikpKSkKc3VtbWFyeShNNCkKci5zcXVhcmVkR0xNTShNNCkKQUlDKE00KQoKIyBDcmVhdGUgcGFpcnMgcGxvdC4gCmdncGFpcnMoTTRfZGYpCmdncGFpcnMoTTRfQ19kZikKZ2dwYWlycyhNNF9IX2RmKQpgYGAKCiMgTTU6IElTQyBkYXRhICsgYWZmZWN0aXZlIGRhdGEgKyBiZWhhdmlvcmFsIGRhdGEKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTUgPC0gbG0obG9nKEdyb3NzX1VTX1cxX251bSkgfiBUeXBlIAogICAgICAgICAgICAgKyBzY2FsZShUaGVhdGVyc19VU19XMV9udW0pIAogICAgICAgICAgICAgKyBzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpIAogICAgICAgICAgICAgKyBzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpICAKICAgICAgICAgICAgICMrIHNjYWxlKFdfc2NvcmVfc2NhbGVkKSAKICAgICAgICAgICAgICsgc2NhbGUoTkFjY19JU0MpIAogICAgICAgICAgICAgKyBzY2FsZShBSW5zX0lTQykgCiAgICAgICAgICAgICArIHNjYWxlKE1QRkNfSVNDKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShUaGVhdGVyc19VU19XMV9udW0pIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICAjKyBUeXBlOnNjYWxlKFdfc2NvcmVfc2NhbGVkKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5BY2NfSVNDKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShBSW5zX0lTQykgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19JU0MpCiAgICAgICAgICAgICAsIGRhdGEgPSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gJT4lIG11dGF0ZShUeXBlID0gZmFjdG9yKFR5cGUsIGxldmVscyA9IGMoImhvcnJvciIsICJjb21lZHkiKSkpKQpzdW1tYXJ5KE01KQpyLnNxdWFyZWRHTE1NKE01KQpBSUMoTTUpCgojIENyZWF0ZSBwYWlycyBwbG90LiAKZ2dwYWlycyhNNV9kZikKZ2dwYWlycyhNNV9DX2RmKQpnZ3BhaXJzKE01X0hfZGYpCmBgYAoKIyBNNjogTmV1cmFsIHdob2xlIGRhdGEgYWxvbmUKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTYgPC0gbG0obG9nKEdyb3NzX1VTX1cxX251bSkgfiBUeXBlICsgCiAgICAgICAgICAgICAgIysgVGhlYXRlcnNfVVNfVzFfbnVtIAogICAgICAgICAgICAgICsgc2NhbGUoTkFjY193aG9sZSkgCiAgICAgICAgICAgICAgKyBzY2FsZShBSW5zX3dob2xlKSAKICAgICAgICAgICAgICArIHNjYWxlKE1QRkNfd2hvbGUpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX3dob2xlKSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc193aG9sZSkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE1QRkNfd2hvbGUpIAogICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTYpCnIuc3F1YXJlZEdMTU0oTTYpCkFJQyhNNikKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE02X2RmKQpnZ3BhaXJzKE02X0NfZGYpCmdncGFpcnMoTTZfSF9kZikKYGBgCgojIE03OiBOZXVyYWwgd2hvbGUgZGF0YSArIGFmZmVjdGl2ZSBkYXRhICsgYmVoYXZpb3JhbCBkYXRhCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck03IDwtIGxtKGxvZyhHcm9zc19VU19XMV9udW0pIH4gVHlwZSAKICAgICAgICAgICAgICsgc2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICAgICAgIysgVG90YWxfd2Vla3MgCiAgICAgICAgICAgICAjKyBXZWVrc19hdmdfcGVyX3RoZWF0ZXIKICAgICAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgICAgICsgc2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKSAgCiAgICAgICAgICAgICAjKyBzY2FsZShXX3Njb3JlX3NjYWxlZCkgCiAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfd2hvbGUpIAogICAgICAgICAgICAgKyBzY2FsZShBSW5zX3dob2xlKSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ193aG9sZSkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY193aG9sZSkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc193aG9sZSkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ193aG9sZSkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTcpCnIuc3F1YXJlZEdMTU0oTTcpCkFJQyhNNykKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE03X2RmKQpnZ3BhaXJzKE03X0NfZGYpCmdncGFpcnMoTTdfSF9kZikKYGBgCgojIE04OiBOZXVyYWwgb25zZXQgZGF0YSBhbG9uZQpgYGB7ciwgZWNobyA9IEZBTFNFfQpNOCA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgKyAKICAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfb25zZXQpIAogICAgICAgICAgICAgICsgc2NhbGUoQUluc19vbnNldCkgCiAgICAgICAgICAgICAgKyBzY2FsZShNUEZDX29uc2V0KSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19vbnNldCkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfb25zZXQpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX29uc2V0KSAKICAgICAgICAgICAgICAsIGRhdGEgPSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gJT4lIG11dGF0ZShUeXBlID0gZmFjdG9yKFR5cGUsIGxldmVscyA9IGMoImhvcnJvciIsICJjb21lZHkiKSkpKQpzdW1tYXJ5KE04KQpyLnNxdWFyZWRHTE1NKE04KQpBSUMoTTgpCgojIENyZWF0ZSBwYWlycyBwbG90LiAKZ2dwYWlycyhNOF9kZikKZ2dwYWlycyhNOF9DX2RmKQpnZ3BhaXJzKE04X0hfZGYpCmBgYAoKIyBNOTogTmV1cmFsIG9uc2V0IGRhdGEgKyBhZmZlY3RpdmUgZGF0YSArIGJlaGF2aW9yYWwgZGF0YQpgYGB7ciwgZWNobyA9IEZBTFNFfQpNOSA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgCiAgICAgICAgICAgICArIHNjYWxlKFRoZWF0ZXJzX1VTX1cxX251bSkKICAgICAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgICAgICsgc2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKSAgCiAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfb25zZXQpIAogICAgICAgICAgICAgKyBzY2FsZShBSW5zX29uc2V0KSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19vbnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19vbnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc19vbnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19vbnNldCkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTkpCnIuc3F1YXJlZEdMTU0oTTkpCkFJQyhNOSkKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE05X2RmKQpnZ3BhaXJzKE05X0NfZGYpCmdncGFpcnMoTTlfSF9kZikKYGBgCgojIE0xMDogTmV1cmFsIG1pZGRsZSBkYXRhIGFsb25lCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck0xMCA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgKyAKICAgICAgICAgICAgICArIHNjYWxlKE5BY2NfbWlkZGxlKSAKICAgICAgICAgICAgICArIHNjYWxlKEFJbnNfbWlkZGxlKSAKICAgICAgICAgICAgICArIHNjYWxlKE1QRkNfbWlkZGxlKSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19taWRkbGUpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShBSW5zX21pZGRsZSkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE1QRkNfbWlkZGxlKSAKICAgICAgICAgICAgICAsIGRhdGEgPSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gJT4lIG11dGF0ZShUeXBlID0gZmFjdG9yKFR5cGUsIGxldmVscyA9IGMoImhvcnJvciIsICJjb21lZHkiKSkpKQpzdW1tYXJ5KE0xMCkKci5zcXVhcmVkR0xNTShNMTApCkFJQyhNMTApCgojIENyZWF0ZSBwYWlycyBwbG90LiAKZ2dwYWlycyhNMTBfZGYpCmdncGFpcnMoTTEwX0NfZGYpCmdncGFpcnMoTTEwX0hfZGYpCmBgYAoKIyBNMTE6IE5ldXJhbCBtaWRkbGUgZGF0YSArIGFmZmVjdGl2ZSBkYXRhICsgYmVoYXZpb3JhbCBkYXRhCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck0xMSA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgCiAgICAgICAgICAgICArIHNjYWxlKFRoZWF0ZXJzX1VTX1cxX251bSkKICAgICAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgICAgICsgc2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKSAgCiAgICAgICAgICAgICArIHNjYWxlKE5BY2NfbWlkZGxlKSAKICAgICAgICAgICAgICsgc2NhbGUoQUluc19taWRkbGUpIAogICAgICAgICAgICAgKyBzY2FsZShNUEZDX21pZGRsZSkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19taWRkbGUpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfbWlkZGxlKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX21pZGRsZSkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTExKQpyLnNxdWFyZWRHTE1NKE0xMSkKQUlDKE0xMSkKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0xMV9kZikKZ2dwYWlycyhNMTFfQ19kZikKZ2dwYWlycyhNMTFfSF9kZikKYGBgCgojIE0xMjogTmV1cmFsIG9mZnNldCBkYXRhIGFsb25lCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck0xMiA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgKyAKICAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfb2Zmc2V0KSAKICAgICAgICAgICAgICArIHNjYWxlKEFJbnNfb2Zmc2V0KSAKICAgICAgICAgICAgICArIHNjYWxlKE1QRkNfb2Zmc2V0KSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19vZmZzZXQpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShBSW5zX29mZnNldCkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE1QRkNfb2Zmc2V0KSAKICAgICAgICAgICAgICAsIGRhdGEgPSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gJT4lIG11dGF0ZShUeXBlID0gZmFjdG9yKFR5cGUsIGxldmVscyA9IGMoImhvcnJvciIsICJjb21lZHkiKSkpKQpzdW1tYXJ5KE0xMikKci5zcXVhcmVkR0xNTShNMTIpCkFJQyhNMTIpCgojIENyZWF0ZSBwYWlycyBwbG90LiAKZ2dwYWlycyhNMTJfZGYpCmdncGFpcnMoTTEyX0NfZGYpCmdncGFpcnMoTTEyX0hfZGYpCmBgYAoKIyBNMTM6IE5ldXJhbCBvZmZzZXQgZGF0YSArIGFmZmVjdGl2ZSBkYXRhICsgYmVoYXZpb3JhbCBkYXRhCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck0xMyA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgCiAgICAgICAgICAgICArIHNjYWxlKFRoZWF0ZXJzX1VTX1cxX251bSkKICAgICAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgICAgICsgc2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKSAgCiAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfb2Zmc2V0KSAKICAgICAgICAgICAgICsgc2NhbGUoQUluc19vZmZzZXQpIAogICAgICAgICAgICAgKyBzY2FsZShNUEZDX29mZnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19vZmZzZXQpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfb2Zmc2V0KSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX29mZnNldCkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTEzKQpyLnNxdWFyZWRHTE1NKE0xMykKQUlDKE0xMykKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0xM19kZikKZ2dwYWlycyhNMTNfQ19kZikKZ2dwYWlycyhNMTNfSF9kZikKYGBgCgojIE0xNDogU2VxdWVuY2UgbW9kZWwKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTE0IDwtIGxtKGxvZyhHcm9zc19VU19XMV9udW0pIH4gVHlwZSAKICAgICAgICAgICAgICsgc2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICAgICAgKyBzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpIAogICAgICAgICAgICAgKyBzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpIAogICAgICAgICAgICAgIysgc2NhbGUoV19zY29yZV9zY2FsZWQpICAKICAgICAgICAgICAgICsgc2NhbGUoTkFjY19vbnNldCkgCiAgICAgICAgICAgICArIHNjYWxlKEFJbnNfbWlkZGxlKSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19vZmZzZXQpIAogICAgICAgICAgICAgIysgVHlwZTpzY2FsZShUaGVhdGVyc19VU19XMV9udW0pICMgVGhpcyBpbXByb3ZlZCB0aGUgcmVzdWx0cy4gCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICMrIFR5cGU6c2NhbGUoV19zY29yZV9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19vbnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc19taWRkbGUpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE1QRkNfb2Zmc2V0KQogICAgICAgICAgICAgLCBkYXRhID0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uICU+JSBtdXRhdGUoVHlwZSA9IGZhY3RvcihUeXBlLCBsZXZlbHMgPSBjKCJob3Jyb3IiLCAiY29tZWR5IikpKSkKc3VtbWFyeShNMTQpCnIuc3F1YXJlZEdMTU0oTTE0KQpBSUMoTTE0KQoKIyBDcmVhdGUgcGFpcnMgcGxvdC4gCiNnZ3BhaXJzKE0xNF9kZikKI2dncGFpcnMoTTE0X0NfZGYpCiNnZ3BhaXJzKE0xNF9IX2RmKQp2aWYoTTE0KQpgYGAK